const { insert,query } = require("../sqlite3/index.js");
const { logfn } = require("./logfn.js");
//导入fs 模块
const fs = require("fs")
//导入 安装的cheerio 模块
const cheerio = require("cheerio")
//导入 nightmare  模块
const Nightmare = require('nightmare')
//调出  nightmare 自带的控制台和模拟网页窗口
const nightmare = Nightmare({
    show: true,
    openDevTools: {
        mode: 'detach'
    }
})

//需要爬的地址   这里是网易云的示例页面
let home_url = "https://music.163.com/#/discover/artist/cat?id=1002"

nightmare
//开始访问链接
    .goto(home_url)
//利用代码模拟点击     nightmare自带的click方法  里面填selector   
//.m-cvrlst li:nth-child(16) a   选择我们需要的a标签里的内容
    .click(".m-cvrlst li:nth-child(16) a", () => {
        console.log("点击完了......")
//设置延时定时器    限制访问速度，两秒后开始执行
        setTimeout(() => {
            console.log("新界面....")
//这里访问点击后获取的新页面数据   
            nightmare.goto("https://music.163.com/#/artist?id=9548")
//evaluate    评价 评估       这里返回的数据   会传到下面then 的data里
                .evaluate(() => {
                    return document.querySelector(".g-iframe").contentWindow.document.querySelector("body").innerHTML
                })
                .then((data) => {
                    console.log("开始查询......")
//因为抓取的innerHTML 里是利用脚本拼接的方式拼接到body里
//所以这里用到cheerio 模块  来执行  获取到的数据
                    let $ = cheerio.load(data)
//定义一个  空数组  来保存  获取到的歌曲信息
                    let songs = []
                    var name=$(".sname-max").text();
                    $(".m-table tr .txt a").each((i, item) => {
                        let song_id = $(item).attr("href")
                        let song_name = $(item).find("b").attr("title")
                        let tmp_dic = {
                            "song_id": song_id,
                            "song_name": song_name
                        }
                        insert(song_name,'wyy',song_id);
                        songs.push(tmp_dic)
                    })
//将数组里的数据  通过JSON方式  转换字符串  
                    
                    logfn(songs,name)
                    
                })
        }, 2000);
    })
 .then(() => {
        var res= query('wyy');
        console.log('then',res)
    })
//捕获错误
    .catch((err) => {
        console.log("访问错误", err)
    })